Locating service endpoints from a service registry

ABSTRACT

A method, operable by a service registry in a service orientated architecture system, for providing a service within the system. A service request is received from a service requester in the system. The status of the service is checked as registered in the service registry. In response to the service not having a registered service endpoint or a property of the service falling below a defined threshold, a request is sent to service providers or subsequent service registries to provide a new service and according to the defined threshold. In response to a service provider providing the new service according to the defined standard, the service registry is updated with the new service and responding to the service requester that the service is available. The embodiments allow both direct interaction between the requester and provider or indirect interaction via a service management layer.

TECHNICAL FIELD

The present invention relates to service based deployment within asystem based on a service oriented architecture (SOA), and morespecifically, to locating service endpoints from a service registry.

BACKGROUND

Service oriented architecture (SOA) is a business-driven ITarchitectural approach that supports integrating business processes aslinked, repeatable business tasks, or services as defined in servicedocuments. A service document is a basic building block of SOA thatdefines how a service can be used, accessed and managed with otherservices. Service documents are used by analysts, architects, anddevelopers during a development phase of the SOA life cycle to locateservices to reuse and to evaluate the impact of changes to serviceconfigurations. Service documents are variously described as metadata,objects, descriptions, entities and artifacts that store informationabout a service including a service description and a service endpoint.A service endpoint is a unique computer addressable location for theservice. Service documents are stored in a service registry within anSOA system. Information in each service document, including the serviceendpoints, is indexed in a process known as shredding. Indexing servicedocuments to maintain a list of all services and service endpoints is apart of maintaining on demand services. An example of a service registryis IBM® WebSphere® Service Registry & Repository. The registry mayhighlight that there are several endpoints available to route theservice request. When a request comes in, the registry can use itsknowledge of the available service architecture topology and note thatthe service requested is either not available or is performing below theagreed service level agreement.

Installed services having a registered service endpoint can be invoked,whereas, services without a registered endpoint cannot be invoked.Services are installed in a service provider with a fixed or readilyavailable service endpoint defined in the service document and indexedby a service registry. However, many service providers have fixedresources and have to prioritize high demand services over low demandservices; therefore, not all services are available at the same time.

A low demand service may be uninstalled from a service provider andremoved from the service provider's active services; any serviceendpoint associated with the service will be removed by the registry andthe service archived so that it requires re-installation and setting upwith a new service endpoint. It would be useful for a customer torequest an uninstalled service and not experience any delay ordifference in service. A low demand or uninstalled service manysometimes be referred to as legacy or an underused service.

The service provider may, instead of uninstalling, lower the processingpriority of a low demand service or in some other way reduce processingbandwidth given to the low demand service. This could have the effect ofreducing the quality of service experienced by the service requester tothe point where the service was not what the service requester wanted.In some cases, the reduction in quality would be contrary to the termsof the service contract. It would be useful for a service requester toreceive a desired quality of service and not experience a delay ordifference in quality of service even if the requested service had hadits processing priority lowered and needed to be reconfigured.

SUMMARY

In one embodiment of the present invention, a method, operable by aservice registry in a service oriented environment for provisioning aservice within the service oriented environment, comprises receiving arequest for a service from a service requester in the environment. Themethod further comprises searching the service registry for a serviceendpoint associated with the service request. The method additionallycomprises in response to not locating the service endpoint in theservice registry but locating a service provider associated with therequested service, requesting the service endpoint from the locatedservice provider, where the located service provider sets up service,and where the located service provider associates the set up servicewith the service endpoint. Furthermore, the method comprises associatingthe requested service with the service endpoint. Additionally, themethod comprises sending the service endpoint to the service requester,where the service requester requests the service from the locatedservice provider at the received service endpoint, and where the serviceis provided to the service requester by the located service provider inresponse to receiving from the service requester the service request atthe service endpoint thereby allowing the service requester to receive adesired quality of service and not experience a delay or difference inquality of service.

Other forms of the embodiment of the method described above are in asystem and in a computer program product.

The foregoing has outlined rather generally the features and technicaladvantages of one or more embodiments of the present invention in orderthat the detailed description of the present invention that follows maybe better understood. Additional features and advantages of the presentinvention will be described hereinafter which may form the subject ofthe claims of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when thefollowing detailed description is considered in conjunction with thefollowing drawings, in which:

FIG. 1 illustrates a computer system node in accordance with anembodiment of the present invention;

FIG. 2 illustrates a computer network environment comprising more thanone computer system node in accordance with an embodiment of the presentinvention;

FIG. 3 illustrates a service oriented architecture system showinginteractions between a service registry; a service requester and serviceproviders according to an embodiment of the present invention;

FIG. 4 illustrates a service oriented architecture system showing theinteractions between a service registry; a service requester; serviceproviders and a resource provider according to a resource providerembodiment of the present invention;

FIG. 5 illustrates a service registry according to an embodiment of thepresent invention;

FIG. 6 illustrates virtualization abstraction model layers according toa cloud embodiment of the present invention;

FIG. 7 is a process diagram of a method for provisioning a servicewithin the service oriented environment in accordance with an embodimentof the present invention;

FIG. 8 is a process diagram of an alternative method for provisioning aservice within the service oriented environment in accordance with anembodiment of the present invention; and

FIG. 9 is a process diagram of a further alternative method forprovisioning a service within the service oriented environment inaccordance with an embodiment of the present invention.

DETAILED DESCRIPTION

The present invention comprises a method, system and computer programproduct, operable by a service registry in a service orientatedarchitecture system, for providing a service within the system. Aservice request is received from a service requester in the system. Thestatus of the service is checked as registered in the service registry.In response to the service not having a registered service endpoint or aproperty of the service falling below a defined threshold, a request issent to service providers or subsequent service registries to provide anew service and according to the defined threshold. In response to aservice provider providing the new service according to the definedstandard, the service registry is updated with the new service andresponding to the service requester that the service is available. Theembodiments allow both direct interaction between the requester andprovider or indirect interaction via a service management layer.

A service registry according to the embodiments of the present inventionrequests that a service (or additional instances of the service) be madeavailable by a service provider and can be provided by cloud computing,for instance, by placing a virtual machine image containing the serviceonto available hardware. The new service endpoint is added to theregistry and an enterprise service bus (ESB) is able to route to the newendpoint (in addition to any existing endpoints). The service remainsdeployed until some time-out or usage value is reached whereby theservice is removed and the hardware is made available for otherservices. The service endpoint is removed from the registry if theregistry discovers that the service endpoint has been removed from theservice provider.

A registry is used by administrators who are provisioning the servicesdirectly or by using SOA administration applications. When services arestarted by an administrator, endpoint information is automaticallyplaced in the registry for use by administrators or SOA administrationapplications. The endpoint information contains other types of endpointsas well as service endpoints and the present invention recognizes thatwhen a service endpoint is missing, then it will be possible to acquireor provision a new service endpoint using the other types of endpointinformation. Other types of endpoints are more abstract than serviceendpoints that are generally internet protocol addresses. Theembodiments make available the other types of endpoint information toadministrators and/or administration applications.

Embodiments of the present invention are realized in a service registry.The registry offers a layer of indirection whereby the invokingapplication does not necessarily know the location of the serviceendpoint. The indirection is used by service applications on anenterprise service bus (ESB) to allow management of direction of servicerequests to different endpoints dependent on service characteristics,such as quality of service or load balancing.

If there is no suitable service endpoint, or the performancecharacteristics are too low, then a request is made to provision a newinstance of the service. An example of an existing endpoint that is nota service endpoint is a cloud tool that provisions virtual machineimages when requested.

In the case of there being no service endpoint, then the registry canwait until a new service endpoint instance has been provided. Theservice registry returns this new service endpoint to the requestingapplication and the request is routed to the new service endpoint. Inthe case where there are already available service endpoints, therequest can be routed to the existing service endpoints, but when thenew service endpoint becomes available, future requests will have thenew service endpoint available to them in addition to the existingservice endpoints.

An advantage of the solution is that it allows more efficient managementof low demand services from a service provider's available services asthe solution can more efficiently uninstall and then reinstall aservice. Deployed service instances can be monitored such that when theusage of the service drops below a set level, or a timeout is reached,then the service virtual machine image is removed from the cloud server.

The solution is particularly advantageous for a service provider thathas limited numbers of servers and wants to offer many services tocustomers using cloud resources to expand services. Such a serviceprovider might make available virtual endpoints that can host any one ofa number of services. The service provider would simply provision a newservice when a service request is received and then remove the servicewhen the usage level has dropped. This would mean that the serviceprovider will only have to pay for usage of the cloud when they areusing it to host services, therefore, ensuring that their server costsare not fixed.

Referring to FIG. 1, there is shown a component diagram of a computersystem node 10 according to an embodiment of the present invention.Computer system node 10 comprises a computer system/server 12, which isoperational with numerous other general purpose or special purposecomputing system environments or configurations. Examples of well-knowncomputing systems, environments, and/or configurations that may besuitable for use with computer system/server 12 include, but are notlimited to, personal computer systems, server computer systems, thinclients, thick clients, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputer systems, mainframecomputer systems, and distributed cloud computing environments thatinclude any of the above systems or devices, and the like.

Computer system/server 12 may be described in the general context ofcomputer system-executable instructions, such as program modules, beingexecuted by a computer system. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes.

Computer system/server 12 may be embodied in distributed cloud computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed cloudcomputing environment, program modules may be located in both local andremote computer system storage media including memory storage devices.

As shown in FIG. 1, computer system/server 12 in computer system node 10is shown in the form of a general-purpose computing device. Thecomponents of computer system/server 12 may include, but are not limitedto, one or more processors or processing units 16, a system memory 28,and a bus 18 that couples various system components including systemmemory 28 to processor 16.

Bus 18 represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. By way of example, and not limiting, sucharchitectures include Industry Standard Architecture (ISA) bus, MicroChannel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnects (PCI) bus.

Computer system/server 12 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 12, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 28 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 30 and/or cachememory 32. Computer system/server 12 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example, storage system 34 can be provided for readingfrom and writing to a non-removable, non-volatile magnetic media (notshown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 18 by one or more datamedia interfaces. As will be further depicted and described below,memory 28 may include at least one program product having a set (forexample, at least one) of program modules that are configured to carryout the functions of embodiments of the present invention.

Program/utility 40, having a set (at least one) of program modules 42,may be stored in memory 28 by way of example, and not limiting, as wellas an operating system, one or more application programs, other programmodules, and program data. Each of the operating system, one or moreapplication programs, other program modules, and program data or somecombination thereof, may include an implementation of a networkingenvironment. Program modules 42 generally carry out the functions and/ormethodologies of embodiments of the present invention as describedherein.

Computer system/server 12 may also communicate with one or more externaldevices 14 such as a keyboard, a pointing device, a display 24, etc.;one or more devices that enable a user to interact with computersystem/server 12; and/or any devices (e.g., network card, modem, etc.)that enable computer system/server 12 to communicate with one or moreother computing devices. Such communication can occur via I/O interfaces22. Still yet, computer system/server 12 can communicate with one ormore networks such as a local area network (LAN), a general wide areanetwork (WAN), and/or a public network (e.g., the Internet) via networkadapter 20. As depicted, network adapter 20 communicates with the othercomponents of computer system/server 12 via bus 18. It should beunderstood that although not shown, other hardware and/or softwarecomponents could be used in conjunction with computer system/server 12.Examples include, but are not limited to: microcode, device drivers,redundant processing units, external disk drive arrays, RAID systems,tape drives, and data archival storage systems.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a computer, or other programmable data processing apparatusto produce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks. These computerreadable program instructions may also be stored in a computer readablestorage medium that can direct a computer, a programmable dataprocessing apparatus, and/or other devices to function in a particularmanner, such that the computer readable storage medium havinginstructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be accomplished as one step, executed concurrently,substantially concurrently, in a partially or wholly temporallyoverlapping manner, or the blocks may sometimes be executed in thereverse order, depending upon the functionality involved. It will alsobe noted that each block of the block diagrams and/or flowchartillustration, and combinations of blocks in the block diagrams and/orflowchart illustration, can be implemented by special purposehardware-based systems that perform the specified functions or acts orcarry out combinations of special purpose hardware and computerinstructions.

Referring now to FIG. 2, an illustrative cloud computing environment 50of an embodiment of the present invention is depicted. As shown, cloudcomputing environment 50 comprises one or more cloud computing nodes 10with which local computing devices used by cloud consumers, such as, forexample, personal digital assistant (PDA) or cellular telephone 54A,desktop computer 54B, laptop computer 54C, and/or automobile computersystem 54N may communicate. Nodes 10 may communicate with one another.They may be grouped (not shown) physically or virtually, in one or morenetworks, such as private, community, public, or hybrid clouds, or acombination thereof. This allows cloud computing environment 50 to offerinfrastructure, platforms and/or software as services for which a cloudconsumer does not need to maintain resources on a local computingdevice. It is understood that the types of computing devices 54A-54Nshown in FIG. 2 are intended to be illustrative and that computing nodes10 and cloud computing environment 50 can communicate with any type ofcomputerized device over any type of network and/or network addressableconnection (e.g., using a web browser).

Referring to FIG. 3, there is shown a component diagram of a SOA system300 according to an embodiment of the present invention; the SOA system300 comprises a user device 54A and at least two networks 301 and 306.First network 301 comprises at least one service provider 302 and aregistry 304; typically, first network 301 is an enterprise network.Service provider 302 comprises an exemplary mapping and navigationservice 310. A second network 306 comprises service providers 308A-308N.Registry 304 includes service endpoint engine 532.

A known interaction between a client device 54A and a service provider302 or 308A-308N goes as follows. The client device 54A requests the useof a service from the registry 304, for example, the client device mayrequest a map of its location. The registry 304 searches for and locatesthe requested service, for example, the mapping and navigation service310. The registry 304 then selects one or more service endpointsassociated with the located service. Each service endpoint comprises atleast an Internet Protocol (IP) address and optionally a port number andservice provider name to allow an IP service request to the serviceprovider. The registry 304 then sends the service endpoint back to therequesting client device 54A and the client device 54A requests themapping service from the service provider 302 or 308A-308N using the oneor more of the supplied service endpoints. The registry 304 may supply aservice endpoint that is within the same domain or enterprise (that isfirst network 301) as the registry 304 or it may supply one that is inanother domain or enterprise. With the supplied service endpoint, theclient can independently request a service from a service provider.

A problem occurs when the registry 304 cannot find a suitable serviceendpoint for a service request. All the embodiments provide a serviceendpoint engine 532 as part of the registry to seek out a suitableservice endpoint outside of the registry when none is found in theregistry. All the embodiments seek out the service endpoint from serviceproviders and also other service registries (other service registriesare not shown in FIGS. 3 and 4). If a service endpoint does not exist inthe registry 304, then communication with other service entities allowsthe registry 304 to establish whether the service is temporarily offlineor no longer provided by any service provider. A temporarily offlineservice is a service that is missing a service endpoint or notinstalled. If the service is temporarily offline, then the registry 304seeks to re-establish, at the service provider, the service asavailable. Once a service provider 302 or 308A-308N makes available aservice endpoint for a particular service, then the newly availableservice endpoint is registered, at the service register, for the firsttime or registered again by the registry 304 and then provided back tothe service requester 54A. In one embodiment, the service requester 54Acommunicates directly with the service provider using the providedendpoint.

Referring to FIG. 4, there is shown an SOA system 400 providing fullservice management according to a service management embodiment of thepresent invention. The SOA system 400 comprises user device 54A and atleast two networks 401 and 406. First network 401 comprises at least oneservice provider 402; registry 404 and resource provider 405; typically,first network 401 is an enterprise network. A second network 406comprises service providers 408A-408N. Registry 404 includes serviceendpoint engine 532. Service provider 402 comprises an exemplary mappingand navigation service 410.

In this embodiment, full service management comprises a registry 404interacting with resource provider 405 to provide a service, forexample, a mapping service, without a client needing to engage with aservice provider. A client requests the service from the serviceregistry and then the resource provider provides the service from theservice provider. Once a newly discovered service endpoint isregistered, it is used by the resource provider 405 to interact with theservice provider 402 or 408A-408N to control the service. The resourceprovider 405 acts as a proxy to communicate between the service provider402 or 408A-408N and the service requester 54A. The resource provider405 allows the full service management of the service including:charging for the service and management of service quality. In thisembodiment, the service requester 54A does not communicate with theservice provider 405 directly and the actual endpoint address of theservice provider 402 or 408A-408N is not known to the service requester54A.

Referring to FIG. 5, a component diagram of a service registry 304 (or404) is described according to an embodiment of the present invention. Aservice registry 304 or 404 stores a plurality of service documents andallows access to the documents and the corresponding services. Theservice documents are indexed and the indices are stored in a serviceregistry to allow location of a specific service with a particularcharacteristic. The service registry is an index of a subset ofinformation about a service (for example, the location and name ofservice document) enabling the corresponding service document to belocated and accessed in a repository 514 (or even the correspondingservice located at the service provider). A tightly bonded serviceregistry and repository allow a service operation to use both theindexed service information in the registry and the detailed serviceinformation in the repository. An example of an integrated serviceregistry and repository is IBM® WebSphere® Registry and Repository(WSRR).

Such an integrated service registry and repository has advantages ofgreater business agility and resilience through reuse than separatesystems. Further advantages of looser coupling, greater flexibility,better interoperability, and better governance arise from theintegration. These advantages are addressed by separating servicedescriptions from their implementations, and using the servicedescriptions across the life cycle of the service. Standards-basedservice metadata artifacts, such as Web Service Definition Language(WSDL), extensible mark-up language (XML) schema, policy or ServiceComponent Architecture (SCA) documents, capture the technical details ofwhat a service can do, how it can be invoked, or what it expects otherservices to do. Semantic annotations and other metadata can beassociated with these artifacts to offer insight to potential users ofthe service on how and when it can be used, and what purposes it serves.

In one embodiment, the service registry and repository for servicedocuments is based on IBM® WebSphere® Service Registry and Repository.Such service documents include traditional Internet services that use arange of protocols and are implemented according to a variety ofprogramming models. Although the embodiment discussed above is astandalone service registry, embodiments may comprise other SOAcomponents that have an integrated service registry; for example, aservice provider might have an integrated service registry to enableregistry functions as well as service provider functions.

The service registry 304 (or 404) of one embodiment of the presentinvention is a Java® Platform, Enterprise Edition (Java® EE 6)application that runs on an IBM® WebSphere® Application Server 7 anduses an object database as a backing store to persist the servicemetadata. The service registry takes advantage of the role-based accesscontrol so that role-based views and access control can be turned onwhen the service registry and repository is deployed as anenterprise-wide application. Referring to FIG. 5, the service registry304/404 comprises: registry engine 512; repository 514; governor 520;classifier 522; access controller 524; administration interface 526;user interface 528; programming interface 530; and service endpointengine 532.

The registry engine 512 offers both registry function and repositoryfunction for service metadata. The repository function allows users tostore (in repository 514), manage and query service metadata artifactsholding service descriptions. Registry engine 512 not only takes goodcare of the documents containing service metadata by reliablepersistence of the data, but it also provides a fine-grainedrepresentation of the content of those documents, for example, ports andport types in some service documents. The registry engine 512 makesprovision for decorating registered service declarations and elements ofthe derived content models with user-defined properties, relationships,and classifications. The registry provides a user interface 528 thatmakes use of those declarations when a search is performed to findentities, such as a service endpoint or service interface.

Documents stored in repository 514 are monitored by registry engine 512for changes. Whenever a change to a service document is detected byregistry engine 512, it invokes validation and notification functions.Both kinds of function are considered extension mechanisms that can beused to customize how the registry engine 512 reacts to changes. Avalidation function can be written such that the registry engine 512will execute when changes are made to the content. For example, avalidation function that checks for completeness of a servicedefinition. The registry engine 512 includes a notification plug-in (notshown) with a subscription capability for a notification communicating achange in the content of the service registry and repository.

Through the governor 520, the registry engine 512 supports a rich set ofextensible governance functions, including the ability to model aservice life cycle for a governed entity, define valid transitionsbetween service states, write and plug-in validators to guard thetransitions between states, and designate actions (notification actions)to be taken as result of the transition. The governor 520 providesinterfaces to analyze the impact of changes to content, and providesauditing of such changes.

Classifier 522 allows service descriptions and parts of servicedefinitions to be annotated with corporate vocabulary and to capture thegovernance state. Service classification systems are captured in webontology language (OWL) documents that are loaded into the serviceregistry using the administrative interface 526. Service registryentities can be classified with values from these classificationsystems, to allow classification-based queries to be performed, and toallow access restrictions based on classification.

Access controller 524 supports a fine-grained access control model thatallows for the definition of which user roles can perform specific typesof actions on corresponding artifacts. Visibility of services can berestricted by business area and user roles can be restricted fromtransitioning services to certain life cycle states. This is in additionto the role-based access control provided by the service registry andrepository.

Administration interface 526 supports the import and export ofrepository content for exchange with other repositories and provide anapplication programming interface (API) for configuration and basicadministration. These support interactions with the access controller524 and with the classifier 522.

User interface 528 enables user interaction with the service registryand repository and supports all user roles, offering lookup, browse,retrieve, publish, and annotation capabilities, as well as governanceactivities, such as import/export and impact analysis. The userinterface 528 may be offered as a plug-in for various third party toolsto support interoperability.

Programming interface 530 uses standard APIs to interact with registryengine 512 (for instance Java® and a standard SOA protocol). Theprogramming interface 530 provides interfaces for basic operations suchas create, retrieve, update and delete (CRUD), governance operations,and a flexible query capability. The programming interface 530 cancommunicate content using XML data structures or by using Service DataObjects (SDOs). Documents can be created, retrieved, updated and deletedusing either the user interface 528 or the programming interface 530.

Service endpoint engine 532 comprises processing logic for handlingrequests for service endpoints. The processing logic deals with therequest when there is no service endpoint or when the quality of theservice requested does not match the quality of the service provided bya service endpoint. The process steps performed by the service endpointengine 532 are described with reference to the embodiments of FIGS. 7, 8and 9.

Referring to FIG. 6, virtualization abstraction model layers provided bya cloud computing environment of an embodiment of the present inventionare now described. The components, layers, and functions shown in FIG. 6are intended to be illustrative and embodiments of the present inventionare not limited thereto. As depicted, the following layers andcorresponding functions are provided: hardware and software layer 60;virtualization layer 62; management layer 64; and workload layer 66.

Hardware and software layer 60 includes hardware and softwarecomponents. Examples of hardware components include mainframes, in oneexample IBM® zSeries® systems; RISC (Reduced Instruction Set Computer)architecture based servers, in one example IBM® pSeries® systems; IBM®xSeries® systems; IBM® BladeCenter® systems; storage devices; networksand networking components. Examples of software components includenetwork application server software, in one example IBM® Web Sphere®application server software; and database software, in one example IBM®DB2® database software.

Virtualization layer 62 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers;virtual storage; virtual networks, including virtual private networks;virtual applications and operating systems; and virtual clients.

In one embodiment, the service registry 304 (FIGS. 3 and 5) and theresource provisioning are part of management layer 64 of a cloud system.Management layer 64 further includes other functions such as meteringand pricing; user portals and service level management. Resourceprovisioning provides dynamic procurement of computing resources andother resources that are utilized to perform tasks within the cloudcomputing environment. Service registry provides the directory for thecomputing and other resources used in the cloud system. Metering andpricing provide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. User portal provides access to the cloud computingenvironment for consumers and system administrators. Service levelmanagement provides cloud computing resource allocation and managementsuch that required service levels are met.

Workloads layer 66 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation; software development and life cycle management; virtualclassroom education delivery; data analytics processing; transactionprocessing; and mobile desktop. In a SOA system, the workloads in theworkload layer are implemented as services.

Referring to FIG. 7, there follows a description of a process 700 of anembodiment of the present invention performed by the processing logic ofthe service endpoint engine 532 (FIG. 5) and related components in theSOA system 300 (FIG. 3) or SOA system 400 (FIG. 4). This process can beadapted for at least the full service resource provisioning embodimentwith suitable modifications. The process is described as process stepsoccurring with respect to the main components of the SOA system and inparticular with respect to a service registry.

Referring to FIG. 7, in conjunction with FIGS. 3-6, service requester54A requests, step 702, a service provider for a service and directs therequest at the service registry 304. For instance, any one of theworkload 66 services (see FIG. 6).

Service registry 304 searches, step 704, the repository 514 for aservice endpoint associated with the service request, but in line withthe problem addressed by this embodiment, the service registry does notfind an associated service endpoint.

No exact service endpoint is located in the registry but serviceinformation associated with the requested service is used to locate,step 706, a service provider. If there is no associated serviceinformation, then a default service provider is located. For instance, aservice provider name or generic management endpoint information may bestored in the repository and associated with the service request. In anycase, a service provider is located or provided, step 706.

A service endpoint for the requested service is requested from thelocated or default service provider, step 708.

The located or default service provider 308N receives, step 710, theservice request and sets up, step 712, the service. Once set up, theservice provider associates the set up service with a service endpoint.The service might already be set up and have an existing serviceendpoint that the service registry was unaware of. The service mighthave been set up without a service endpoint and therefore the serviceprovider only sets up and associates a service endpoint. If the servicehas not been set up, then service provider sets it up either at a knownlocation or virtually at an unknown location. For virtual set up,resource provisioning in management layer 64 sets up a requiredvirtualization layer configuration of servers, storage, networks,applications and clients and workload 66.

Whether the service endpoint was pre-existing or not, it is sent back,step 714, to the registry 304.

The registry then associates, step 716, the service registered in theservice registry with the received service endpoint.

The registry then sends, step 718, the received service endpoint to theservice requester 54A.

In this embodiment, in step 720, the service requester 54A requests theservice from the service provider 308N at the received service endpoint.

The service provider 308N receives the service request at the serviceendpoint and commences to provide, step 722, the service back to theservice requester 54A.

For instance, mobile phone service requester 54A requires a mappingservice to log global positioning system (GPS) data as the servicerequester travels. A request 702 is made to the service registry forsuch a GPS data logging service but the registry does not find aspecific service endpoint associated with the service. However, theregistry does find a service name “GPS Mapping Service” and a serviceprovider “Telemaps Logger” associated with the service. Service registryrequests, step 708, a service endpoint from “Telemaps Logger.” “TelemapsLogger” receives the service endpoint request and sets up, step 712, ordiscovers a “GPS Mapping Service” at a service endpoint, for example, IPaddress 192.168.2.3 and port 1200 (192.168.2.3:1200). The “TelemapsLogger” service provider then sends back, step 714, the service endpointto the service registry. Service registry 304 associates,192.168.2.3:1200 with “GPS Mapping service” and sends the same serviceendpoint back to the mobile phone. The mobile phone is then free torequest, step 720, the service from “Telemaps Logger” using the receivedservice endpoint. Telemaps Logger provides back the “GPS MappingService” when it is requested on service endpoint 192.168.2.3:1200. Forexample, the service sends map data showing the geographical location ofthe mobile phone, and the map data is rendered on the mobile phonescreen by the mobile phone.

Referring to FIG. 8, there follows a description of a performance method800 of an embodiment of the present invention. As with method 700,method 800 can also be adapted for the full service resourceprovisioning embodiment with suitable modifications. The process isdescribed as process steps occurring with respect to the main componentsof the SOA system and in particular to a service registry.

Referring to FIG. 8, in conjunction with FIGS. 3-6, service requester54A requests, step 802, a service provider for a service having adefined performance level and directs the request at the serviceregistry 304.

Service registry 304 searches, step 804, the repository 514 for aservice endpoint having the defined performance level and associatedwith the service request, but in line with the problem addressed by thisembodiment, the service registry does not find such an associatedservice endpoint.

If one or more service endpoints are located that provide the servicebut not at the required performance level, then these service providersare listed in a potential service provider list. If service providerswithout service endpoints and associated with the requested service arelocated, then these service providers are also listed in the potentialservice provider list. A first service provider is selected, step 806,from those in the potential service provider list; the selection isbased on the closeness of the service performance to the requiredperformance level. Optionally, those service providers having serviceendpoints get higher selection priority over those without. If there isno associated service information, then a default service provider ischosen.

A service endpoint for the requested service is requested, step 808,from the chosen service provider.

The selected or default service provider 308N receives, step 810, theservice request, and if it can provide the required service performance,it sets up, step 812, a service endpoint for the service with thedefined service performance. If the service provider cannot provide theservice performance, then the request is declined and the serviceregistry needs to select another service provider at step 806. If theservice provider can provide the service, then the service might alreadybe set up with a service endpoint but requires additional configuring toget the right performance level. The service might be already set up atthe correct service performance level but without a service endpoint;the service provider only needs to set up an associated service endpointand send it back, step 814. If the service is not already set up, thenthe service provider sets it up either at a known location or virtuallyat an unknown location. Whether the service endpoint was pre-existing ornot, it is sent back, step 814, to the registry 304.

The registry then associates, step 816, the registered service have thedefined performance level with the received service endpoint.

The registry then sends, step 818, the received service endpoint to theservice requester 54A.

In this embodiment, the service requester 54A requests, step 820, theservice from the service provider 308N at the received service endpoint.In this embodiment, the service endpoint will be associated with adefined performance level so there is no need to request the definedperformance level in the second request. In other embodiments, it isconceivable that a service at a given service endpoint will havevariable performance levels on request from the service requester.

The service provider receives the service request at the serviceendpoint and commences to provide, step 822, the service back to theservice requester.

For instance, mobile phone service requester 54A requires a mappingservice to log global positioning system (GPS) data as the servicerequester travels and requires 1 second or shorter updates. In thisexample, 1 second updates rules out our requester's default GPS service.A request 802 is made to the service registry for such a GPS datalogging service but the registry does not find a specific serviceendpoint associated with the service. However, the registry does find aservice named “Euro GPS Mapping Service” having a property that itsprecision is 0.8 sec updates and the registry understands that 0.8 secis shorter than 1 second. Therefore, a service provider “Euro MapLogger” is associated with the service. Service registry requests, step808, a service endpoint from “Euro Maps Logger.” “Euro Maps Logger”receives the service endpoint request and sets up, step 812, ordiscovers a “Euro GPS Mapping Service” at a service endpoint, forexample, IP address 214.168.2.3 and port 2400 (214.168.2.3:2400). The“Euro Maps Logger” service provider then sends back, step 814, theservice endpoint to the service registry. Service registry 304associates, 214.168.2.3:2400 with “Euro GPS Mapping Service” and sendsthe same service endpoint back to the mobile phone. The mobile phone isthen free to request, step 820, the service from “Telemaps Logger” usingthe received service endpoint. Telemaps Logger provides back the “GPSMapping Service” when it is requested on service endpoint192.168.2.3:1200. For example, the service sends map data showing thegeographical location of the mobile phone and the map data is renderedon the mobile phone screen by the mobile phone.

Referring to FIG. 9, there follows a description of a search method 900of a service registry proxy in accordance with an embodiment of thepresent invention. As with method 700 and 800, method 900 can also beadapted for the full service resource provisioning embodiment withsuitable modifications. The process is described as process stepsoccurring with respect to the main components of the SOA system and inparticular to a service registry.

Referring to FIG. 9, in conjunction with FIGS. 3-6, service requester54A requests a service provider for a service from first serviceregistry 304A.

First service registry 304A searches, step 904, the repository 514 for aservice endpoint associated with the service request, but in line withthe problem addressed by this embodiment, first service registry 304A,in step 906, does not find an associated service endpoint.

If there is no associated service information, then a default serviceprovider may be located in accordance with previous embodiments. In thisembodiment, the service registry 304A decides whether to use defaultservice providers or forward the request to subsequent serviceregistries. The service registry uses a search algorithm that generatesa relevance value for each of the located service providers, if therelevance is below a threshold, and there is a second or subsequentservice registry to ask, then service registry 304A requests, step 908,a service provider from a second (or subsequent) service registry 304B.The service information located by the first service registry is alsosent to the second (or subsequent) service registry so that the second(or subsequent) registry can use consolidated service information whenchoosing a service provider.

The second (or subsequent) service registry 304B searches, step 910, theregistry for a service endpoint associated with the service request. Anexact match may be found, in which case, a service endpoint is sent backto the first service registry 304A and the process continues at step920. Where no exact match is made, then the second service registrychooses, step 912, a located service provider or a default serviceprovider. The second service registry 304B could choose a subsequentservice registry based on the relevance of the search but this is notshown.

A service endpoint for the requested service is requested, step 914,from the chosen service provider.

The chosen service provider 308N receives the service request and setsup the service. Once set up, the service provider associates the servicewith a service endpoint. The service endpoint is sent back to the secondservice registry 304B.

The second service registry 304B then associates, step 916, theregistered service with the received service endpoint.

The second service registry 304B then sends, step 918, the receivedservice endpoint to the first service registry 304A.

The first service registry 304A associates, step 920, the registeredservice with the received service endpoint.

The first service registry 304A sends, step 922, the received serviceendpoint to the service requester 54A.

The service requester 54A requests the service from the service provider308N at the received service endpoint (not shown). The service providerreceives the service request at the service endpoint and commences toprovide the service back to the service requester (not shown).

In summary, there is described a method, system and computer programproduct for service based deployment within a system conforming to aservice orientated architecture (SOA). The method, system and computerprogram product, are operable by a service registry in a serviceorientated architecture system for providing a service within the systemand comprising the steps of: receiving a service request from a servicerequester in the system; checking the status of the service asregistered in the service registry; characterized by; in response to theservice not having a registered service endpoint or a property of theservice falling below a defined threshold, sending a request to one ormore service providers or subsequent service registries to provide a newservice; and in response to a service provider providing the newservice, updating the service registry with the new service andresponding to the service requester that the service is available. Theembodiments allow both direct interaction between the requester andprovider or indirect interaction via a service management layer. Theembodiments also allow the service provider to be provided as a virtualserver and the service to be provided as a virtual application.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

The invention claimed is:
 1. A method for provisioning a service withina service oriented environment by a service registry in the serviceoriented environment, the method comprising: receiving, by the serviceregistry, a request for a service from a service requester in theenvironment, wherein the service requester and the service registry areconnected via a network, wherein the service registry stores a pluralityof service documents and allows access to the service documents andcorresponding services; searching the service registry for a serviceendpoint associated with the service request; in response to notlocating the service endpoint in the service registry but locating aservice provider associated with the requested service, requesting theservice endpoint from the located service provider, wherein the locatedservice provider sets up service, wherein the located service providerassociates the set up service with the service endpoint; receiving therequested service endpoint: and registering the requested serviceendpoint, wherein the service endpoint is used to interact with thelocated service provider to control the service, wherein the service isprovided to the service requester by the located service provider inresponse to receiving the service request at the service endpointthereby allowing the service requester to receive a desired quality ofservice and not experience a delay or difference in quality of service,wherein the service endpoint is provided to the located service providerby the service requester who received the service endpoint from theservice registry or the service endpoint is provided to the locatedservice provider by a resource provider connected to the serviceregistry.
 2. The method as recited in claim 1, wherein the servicerequest includes a required standard of service and in response to theservice being registered but not having the required standard, sending arequest to one or more service providers to provide a service having therequired standard; and in response to a service provider providing theservice having the required standard, updating the service registry withthe new service and standard of service.
 3. The method as recited inclaim 2, where the standard of service is a service property meeting arequired threshold.
 4. The method as recited in claim 3, wherein theservice property is one or more of the following: a rate of performingthe service; a cost of the service; and a number of service instancesprovided.
 5. The method as recited in claim 1 further comprising: inresponse to the service requested not being registered, sending theservice request to one or more subsequent service registries to providea service provider for the service.
 6. The method as recited in claim 5further comprising: sending located service information to the one ormore subsequent service registries so that the one or more subsequentservice registries can use previously located service information andsubsequently locate service information to choose the service provider.7. The method as recited in claim 1, wherein the resource provider usesthe service endpoint to interface with the service provider to controlthe service, wherein the resource provider acts as a proxy tocommunicate between the service provider and the service requester.
 8. Acomputer program product for operating a service registry in a serviceoriented architecture system and managing a service within the system,the computer program product comprising one or more computer readablestorage mediums having program code embodied therewith, the program codecomprising the programming instructions for: receiving, by the serviceregistry, a request for a service from a service requester in theenvironment, wherein the service requester and the service registry areconnected via a network, wherein the service registry stores a pluralityof service documents and allows access to the service documents andcorresponding services; searching the service registry for a serviceendpoint associated with the service request; in response to notlocating the service endpoint in the service registry but locating aservice provider associated with the requested service, requesting theservice endpoint from the located service provider, wherein the locatedservice provider sets up service, wherein the located service providerassociates the set up service with the service endpoint; receiving therequested service endpoint; and registering the requested serviceendpoint, wherein the service endpoint is used to interact with thelocated service provider to control the service, wherein the service isprovided to the service requester by the located service provider inresponse to receiving the service request at the service endpointthereby allowing the service requester to receive a desired quality ofservice and not experience a delay or difference in quality of service,wherein the service endpoint is provided to the located service providerby the service requester who received the service endpoint from theservice registry or the service endpoint is provided to the locatedservice provider by a resource provider connected to the serviceregistry.
 9. The computer program product as recited in claim 8, whereinthe service request includes a required standard of service, wherein theprogram code further comprises the programming instructions for: inresponse to the service being registered but not having the requiredstandard, sending a request to one or more service providers to providea service having the required standard; and in response to a serviceprovider providing the service having the required standard, updatingthe service registry with the new service and standard of service. 10.The computer program product as recited in claim 9, where the standardof service is a service property meeting a required threshold.
 11. Thecomputer program product as recited in claim 10, wherein the serviceproperty is one or more of the following: a rate of performing theservice; a cost of the service; and a number of service instancesprovided.
 12. The computer program product as recited in claim 8,wherein the program code further comprises the programming instructionsfor: in response to the service requested not being registered, sendingthe service request to one or more subsequent service registries toprovide a service provider for the service.
 13. The computer programproduct as recited in claim 12, wherein the program code furthercomprises the programming instructions for: sending located serviceinformation to the one or more subsequent service registries so that theone or more subsequent service registries can use previously locatedservice information and subsequently locate service information tochoose the service provider.
 14. The computer program product as recitedin claim 8, wherein the resource provider uses the service endpoint tointerface with the service provider to control the service, wherein theresource provider acts as a proxy to communicate between the serviceprovider and the service requester.
 15. A system, comprising: a memoryfor storing a computer program for operating a service registry in aservice oriented architecture and managing a service within the serviceoriented architecture; and a processor connected to the memory, whereinthe processor is configured to execute the program instructions of thecomputer program comprising: receiving, by the service registry, arequest for a service from a service requester in the environment,wherein the service requester and the service registry are connected viaa network, wherein the service registry stores a plurality of servicedocuments and allows access to the service documents and correspondingservices; searching the service registry for a service endpointassociated with the service request; in response to not locating theservice endpoint in the service registry but locating a service providerassociated with the requested service, requesting the service endpointfrom the located service provider, wherein the located service providersets up service, wherein the located service provider associates the setup service with the service endpoint; receiving the requested serviceendpoint; and registering the requested service endpoint, wherein theservice endpoint is used to interact with the located service providerto control the service, wherein the service is provided to the servicerequester by the located service provider in response to receiving fromthe service requester the service request at the service endpointthereby allowing the service requester to receive a desired quality ofservice and not experience a delay or difference in quality of service,wherein the service endpoint is provided to the located service providerby the service requester who received the service endpoint from theservice registry or the service endpoint is provided to the locatedservice provider by a resource provider connected to the serviceregistry.
 16. The system as recited in claim 15, wherein the servicerequest includes a required standard of service, wherein the programinstructions of the computer program further comprise: in response tothe service being registered but not having the required standard,sending a request to one or more service providers to provide a servicehaving the required standard; and in response to a service providerproviding the service having the required standard, updating the serviceregistry with the new service and standard of service.
 17. The system asrecited in claim 16, where the standard of service is a service propertymeeting a required threshold.
 18. The system as recited in claim 17,wherein the service property is one or more of the following: a rate ofperforming the service; a cost of the service; and a number of serviceinstances provided.
 19. The system as recited in claim 15, wherein theprogram instructions of the computer program further comprise: inresponse to the service requested not being registered, sending theservice request to one or more subsequent service registries to providea service provider for the service.
 20. The system as recited in claim19, wherein the program instructions of the computer program furthercomprise: sending located service information to the one or moresubsequent service registries so that the one or more subsequent serviceregistries can use previously located service information andsubsequently locate service information to choose the service provider.